home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 187_01 / fexpnd.c < prev    next >
C/C++ Source or Header  |  1986-02-19  |  1KB  |  42 lines

  1. /*******************************************************/
  2.  
  3. /*@
  4.   @    fexpnd returns a pointer to the next filename.ext which
  5.   @    matches the first parameter (str) or a zero if no file 
  6.   @    matches that parameter.  The given parameter is processed 
  7.   @    to generate a normalized search string and a normalized 
  8.   @    path prefix.  The prefix is returned in the area pointed to 
  9.   @    by the second parameter.  This string may be concatenated 
  10.   @    with the returned value to give a fully-qualified dataset 
  11.   @    name for open, rename, erase, etc.
  12.   @
  13.   @    You should continue calling fexpnd with the same first 
  14.   @    parameter until it returns a zero, then pass it a new first 
  15.   @    parameter.  This can be used to expand a list of ambiguous 
  16.   @    filenames on a parameter list.   */
  17.  
  18.  
  19. char mydta[80] = {0};
  20. char fxs[80] = {0};
  21. char fxsrch[80] = {0};
  22. char fxpref[80] = {0};
  23.  
  24. char *fexpnd(str, path)
  25. char *str, *path;
  26. {
  27.     int  fixpath(), strcpy();
  28.     char *getret, *dirnxt(), *dirfst();
  29.  
  30.     if (strcmp(str,fxs) == 0)
  31.         getret = dirnxt(mydta);        /* MS-DOS 2.0+ get next function */
  32.     else {
  33.         strcpy(fxs,str);            /* for detection of a new name */
  34.         if (!fixpath(str, fxsrch, fxpref))
  35.             return (0);
  36.         strcpy(path, fxpref);        /* give path to caller */
  37.         getret = dirfst(fxsrch, mydta, 0);    /* MS-DOS 2.0+ get first function */
  38.     }
  39.  
  40.         return(getret);        /* return filename.ext  */
  41. }
  42.